/**
 *  RefItem.java : IceBird project
 *  21:15:57 
 */
package icebird.compiler.x86.old;

import icebird.metadata.BasicType;
import icebird.metadata.ReferenceType;
import icebird.compiler.x86.old.X86Register.GPR;

/**
 * @author Sergey Shulepoff[Knott]
 */
public final class RefItem extends WordItem {
	
	public RefItem(ItemFactory i) {
		super(i);
	}

	
	/* (non-Javadoc)
	 * @see icebird.compiler.x86.WordItem#cloneConstant(icebird.compiler.x86.EmitterContext)
	 */
	@Override
	protected WordItem cloneConstant(EmitterContext ec) {
		notImplemented(); // this is not constant item.
		return null;
	}

	/* (non-Javadoc)
	 * @see icebird.compiler.x86.WordItem#loadToConstant(icebird.compiler.x86.EmitterContext, icebird.compiler.x86.X86Assembler, icebird.compiler.x86.X86Register.GPR)
	 */
	@Override
	protected void loadToConstant(EmitterContext ec, X86Assembler os, GPR reg) {
		notImplemented();
	}

	/* (non-Javadoc)
	 * @see icebird.compiler.x86.WordItem#popFromFPU(icebird.compiler.x86.X86Assembler, icebird.compiler.x86.X86Register.GPR, int)
	 */
	@Override
	protected void popFromFPU(X86Assembler os, GPR reg, int disp) {
		notImplemented();
	}

	/* (non-Javadoc)
	 * @see icebird.compiler.x86.WordItem#pushConstant(icebird.compiler.x86.EmitterContext, icebird.compiler.x86.X86Assembler)
	 */
	@Override
	protected void pushConstant(EmitterContext ec, X86Assembler os) {
		notImplemented(); // This is not constant item.
	}

	/* (non-Javadoc)
	 * @see icebird.compiler.x86.WordItem#pushToFPU(icebird.compiler.x86.X86Assembler, icebird.compiler.x86.X86Register.GPR, int)
	 */
	@Override
	protected void pushToFPU(X86Assembler os, GPR reg, int disp) {
		notImplemented();
	}

	/* (non-Javadoc)
	 * @see icebird.compiler.x86.Item#getType()
	 */
	public BasicType getType() {
		return new ReferenceType(null);
	}
}
